package scala.day02

object Demo03Fun03 {
  def main(args:Array[String]):Unit = {
    /**
      * lambda表达式 -- 对函数定义的简写 -- 匿名函数
      */
    def stringToInt(s:String ):Int = {
      s.toInt
    }

    /**
      * 进行lambda表达式进行简写
      *
      * (s:String) =>s.toInt
      * 箭头左边是参数
      * 箭头右边 返回值 返回值的类型不用写，会自动判断
      */
    def fun(f:String => Int):Unit = {
      val i = f("1000")
      println(i)
    }
    //lambda表达式的应用
    fun((s:String) => {
      s.toInt
    })
    //如果lambda表达式的函数体之后只有一行，可以省略大括号
    fun((s:String) => s.toInt)
    //lambda表达式参数的类型可以自动推断
    fun(s => s.toInt)
    //如果lambda表达式的参数只使用了一次可以通过下划线代替
    fun(_.toInt)
  }
}
